<!DOCTYPE html>
<html lang="en-US">
    <head>
        <title>Win32::Console::ANSI - Perl extension to emulate ANSI console on Win32 system. - metacpan.org</title>
        <link rel="preload" as="fetch" href="https://metacpan.org/account/login_status" crossorigin="anonymous" />
        <link href="https://metacpan.org/_assets/b8ccceeed47a0652049703d99326a9cea4933443.css" rel="stylesheet" type="text/css">
        <script src="https://metacpan.org/_assets/6bfedafe2d7caa915b7d84f61b45936818e3242e.js" type="text/javascript" defer></script>
        <link rel="alternate" type="application/rss+xml" title="Recent CPAN Uploads of Win32-Console-ANSI - MetaCPAN" href="https://metacpan.org/dist/Win32-Console-ANSI/releases.rss" />
        <link rel="canonical" href="./Win32::Console::ANSI.html" />
        <meta name="description" content="Perl extension to emulate ANSI console on Win32 system." />
        <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=5">
        <link rel="shortcut icon" href="https://metacpan.org/static/icons/favicon.ico">
        <link rel="apple-touch-icon" sizes="152x152" href="https://metacpan.org/static/icons/apple-touch-icon.png">
        <link rel="search" href="https://metacpan.org/static/opensearch.xml" type="application/opensearchdescription+xml" title="MetaCPAN">
        <script>
          (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
          (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
          m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
          })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

          (function(skey, ga_id){
            ga('create', ga_id, {
              siteSpeedSampleRate : 100,
              storage             : 'none',
              clientId            : localStorage.getItem(skey)
            });
            ga(function(tracker) {
              localStorage.setItem(skey, tracker.get('clientId'));
            });
            ga('send', 'pageview');
          })('ga:clientId', 'UA-27829474-1');
        </script>
<meta name="twitter:card"        content="summary" />
<meta name="twitter:url"         content="https://metacpan.org/pod/Win32::Console::ANSI" />
<meta name="twitter:title"       content="Win32::Console::ANSI" />
<meta name="twitter:description" content="Perl extension to emulate ANSI console on Win32 system." />
<meta name="twitter:site"        content="metacpan" />
    </head>
    <body>
        <nav class="navbar navbar-default" role="navigation">
            <div class="header-logo-large hidden-xs">
              <a href="https://metacpan.org/" tabindex="0">
                <svg class="logo" aria-label="MetaCPAN">
                  <use class="logo" href="/static/images/metacpan-logo.svg#logo" />
                </svg>
              </a>
            </div>
            <div class="header-logo-icon visible-xs">
              <a href="https://metacpan.org/">
                <svg class="logo" aria-label="MetaCPAN">
                  <use class="logo" href="/static/images/metacpan-logo.svg#dots" />
                </svg>
              </a>
            </div>
            <ul class="nav navbar-nav menu-items hidden-xs hidden-sm">
              <li><a href="https://metacpan.org/about">About</a></li>
              <li><a href="https://metacpan.org/about/sponsors">Sponsor</a></li>
              <li><a href="https://grep.metacpan.org/">grep::cpan</a></li>
              <li><a href="https://metacpan.org/recent">Recent</a></li>
              <li><a href="https://metacpan.org/about/faq">FAQ</a></li>
              <li><a href="https://metacpan.org/tools">Tools</a></li>
              <li><a href="https://fastapi.metacpan.org/">API</a></li>
            </ul>
            <ul class="nav navbar-nav navbar-right">
                <button type="button" class="searchbar-btn visible-xs visible-sm">
                    <i class="fa fa-search button-fa-icon"></i>
                </button>
                <form action="https://metacpan.org/search" class="searchbar-form visible-md visible-lg search-form form-horizontal">
                   <input type="hidden" name="size" id="metacpan_search-size" value="20">
                  <div class="form-group">
                      <div class="search-group">
                        <i class="fa fa-search"></i>
                        <input type="text" name="q" placeholder="Search the CPAN" size="41" autocorrect="off" autocapitalize="off" spellcheck="false" id="metacpan_search-input" class="form-control" value="">
                      </div>
                  </div>
                </form>
                    <li class="icon-slidepanel visible-xs visible-sm">
                      <button data-toggle="slidepanel" data-target=".slidepanel">
                        <span class="button-fa-icon">
                          <i class="fa fa-bars slidepanel-open"></i>
                          <i class="fa fa-times slidepanel-close"></i>
                        </span>
                      </button>
                    </li>
                <form action="https://metacpan.org/account/logout" method="POST" id="metacpan-logout"></form>
                <li class="dropdown logged_in" style="display: none;">
                    <button type="button" class="dropdown-toggle" data-toggle="dropdown">
                      <i class="fa fa-user button-fa-icon logged-in-icon" aria-hidden="true"></i>
                      <i class="fas fa-chevron-down"></i>
                    </button>
                    <ul class="dropdown-menu">
                        <li><a href="https://metacpan.org/account/identities">Identities</a></li>
                        <li><a href="https://metacpan.org/account/profile">Profile</a></li>
                        <li><a href="https://metacpan.org/account/favorite/list">Favorites</a></li>
                        <li>
                            <a href="./Win32::Console::ANSI.html#" type="button" onclick="$('#metacpan-logout').submit(); return false">
                              Logout
                            </a>
                        </li>
                    </ul>
                </li>
                <li class="dropdown logged_out" style="display: none;">
                    <button type="button" class="dropdown-toggle" data-toggle="dropdown">
                      <i class="fa fa-user button-fa-icon" aria-hidden="true"></i>
                      <i class="fas fa-chevron-down"></i>
                    </button>
                    <ul class="dropdown-menu">
                        <li>
                            <a href="https://metacpan.org/login/github">
                                <i class="fab fa-github fa-fw"></i>
                                GitHub
                            </a>
                        </li>
                        <li>
                            <a href="https://metacpan.org/login/twitter">
                                <i class="fab fa-twitter fa-fw"></i>
                                Twitter
                            </a>
                        </li>
                        <li>
                            <a href="https://metacpan.org/login/google">
                                <i class="fab fa-google fa-fw"></i>
                                Google
                            </a>
                        </li>
                    </ul>
                </li>
                <li class="dropdown logged_placeholder">
                    <button>
                      <i class="fa fa-user button-fa-icon" aria-hidden="true"></i>
                    </button>
                </li>
            </ul>
        </nav>
        <div class="page-content ">
          <!--
          <div class="top-notify-banner">
            <i class="fas fa-info-circle"></i>
          </div>
          -->
          <nav class="sidebar">
            <div class="slidepanel">
              <ul class="nav-list ">
    <li class="nav-header no-margin-top">
      <div class="ttip" data-toggle="tooltip" data-placement="bottom" title="The date that this version of Win32-Console-ANSI was released.">
      <span class="relatize">24 Oct 2017 15:41:22 UTC</span>
    </li>
  <li>
    Distribution: <a href="https://metacpan.org/dist/Win32-Console-ANSI">Win32-Console-ANSI</a>
  </li>
  <li>
    Module version: 1.11
  </li>
  <li>
    <a data-keyboard-shortcut="g s" href="https://metacpan.org/dist/Win32-Console-ANSI/source/lib/Win32/Console/ANSI.pm">Source</a>
    (<a href="https://metacpan.org/dist/Win32-Console-ANSI/source/lib/Win32/Console/ANSI.pm?raw=1">raw</a>)
  </li>
  <li>
    <a data-keyboard-shortcut="g b" href="https://metacpan.org/dist/Win32-Console-ANSI/source/lib/Win32/Console">Browse</a>
    (<a href="https://metacpan.org/dist/Win32-Console-ANSI/source/lib/Win32/Console?raw=1">raw</a>)
  </li>
    <li>
      <a data-keyboard-shortcut="g c" href="https://metacpan.org/dist/Win32-Console-ANSI/changes">Changes</a>
    </li>
    <li>
      <a class="nopopup" href="https://metacpan.org/dist/Win32-Console-ANSI/contribute">How to Contribute</a>
    </li>
    <li>
      <a rel="noopener nofollow" data-keyboard-shortcut="g i" href="https://rt.cpan.org/Public/Dist/Display.html?Name=Win32-Console-ANSI">Issues</a>
      (6)
    </li>
    <li>
      <a rel="noopener nofollow" href="http://matrix.cpantesters.org/?dist=Win32-Console-ANSI+1.11" title="Matrix">Testers</a>
        <span title="(pass / fail / na)">(<a rel="noopener nofollow" href="https://www.cpantesters.org/distro/W/Win32-Console-ANSI.html?oncpan=1&amp;distmat=1&amp;version=1.11&amp;grade=2" style="color: #090">1</a> / <a rel="noopener nofollow" href="https://www.cpantesters.org/distro/W/Win32-Console-ANSI.html?oncpan=1&amp;distmat=1&amp;version=1.11&amp;grade=3" style="color: #900">3</a> / <a rel="noopener nofollow" href="https://www.cpantesters.org/distro/W/Win32-Console-ANSI.html?oncpan=1&amp;distmat=1&amp;version=1.11&amp;grade=4">16</a>)</span>
    </li>
    <li>
      <a rel="noopener nofollow" href="http://cpants.cpanauthors.org/release/JLMOREL/Win32-Console-ANSI-1.11">Kwalitee</a>
    </li>
    <li>
      <div class="ttip" data-toggle="tooltip" data-placement="bottom" title="The # people with an indexing permission on Win32-Console-ANSI who have released something to CPAN in the last 2 years (i.e. the # people likely able to release critical fixes in a timely manner)">
      Bus factor: 0
      </div>
    </li>
    <li>
      <a rel="noopener nofollow" href="http://cpancover.com/latest/Win32-Console-ANSI-1.11/index.html">% Coverage </a>
    </li>
    <li>
      License: perl_5
    </li>
    <li class="nav-header">Activity</li>
    <li>
<div class="activity-graph">
    <img src="https://metacpan.org/dist/Win32-Console-ANSI/activity.svg?res=month" />
    <div class="comment">24 month</div>
</div>
    </li>
    <li class="nav-header">Tools</li>
    <li>
      <a itemprop="downloadUrl" href="https://cpan.metacpan.org/authors/id/J/JL/JLMOREL/Win32-Console-ANSI-1.11.tar.gz">
      Download (<span itemprop="fileSize">58.97KB</span>)</a>
    </li>
    <li>
      <a href="https://explorer.metacpan.org/?url=%2Fmodule%2FJLMOREL%2FWin32-Console-ANSI-1.11%2Flib%2FWin32%2FConsole%2FANSI.pm">
        MetaCPAN Explorer
      </a>
    </li>
    <li>
      <a href="https://metacpan.org/dist/Win32-Console-ANSI/permissions">
        Permissions
      </a>
    </li>
    <li>
      <a href="https://metacpan.org/dist/Win32-Console-ANSI/releases.rss">
        Subscribe to distribution
      </a>
    </li>
    <li>
      <button class="btn btn-link" data-toggle="modal" data-target="#metacpan_install-instructions-dialog">
        Install Instructions
      </button>
    </li>
    <li>
      <form action="https://metacpan.org/search">
        <input type="hidden" name="q" value="dist:Win32-Console-ANSI">
        <input type="search" name="q" placeholder="Search distribution" class="form-control tool-bar-form">
        <input type="submit" style="display: none">
      </form>
    </li>
    <li>
      <form action="https://grep.metacpan.org/search">
        <input type="hidden" name="qd" value="Win32-Console-ANSI">
        <input type="hidden" name="source" value="metacpan">
        <input type="search" name="q" placeholder="grep distribution" class="form-control tool-bar-form">
        <input type="submit" style="display: none">
     </form>
    </li>
    <li class="version-jump">
<select onchange="document.location.href=&#39;/release/&#39;+this.value+&#39;/view/lib/Win32/Console/ANSI.pm&#39;" class="form-control tool-bar-form">
  <option disabled selected>Jump to version</option>
<option
  disabled
  value="JLMOREL/Win32-Console-ANSI-1.11"
>1.11
  (JLMOREL on 2017-10-24)</option>
<option
  
  value="JLMOREL/Win32-Console-ANSI-1.10"
>1.10
  (JLMOREL on 2015-09-06)</option>
<option
  
  value="JLMOREL/Win32-Console-ANSI-1.09"
>1.09
  (JLMOREL on 2015-06-16)</option>
<option
  
  value="JLMOREL/Win32-Console-ANSI-1.08"
>1.08
  (JLMOREL on 2014-01-13)</option>
<optgroup label="BackPAN">'
<option
  
  value="JLMOREL/Win32-Console-ANSI-1.07"
>1.07
  (JLMOREL on 2014-01-12)</option>
<option
  
  value="JLMOREL/Win32-Console-ANSI-1.06"
>1.06
  (JLMOREL on 2013-09-10)</option>
<option
  
  value="JLMOREL/Win32-Console-ANSI-1.05"
>1.05
  (JLMOREL on 2013-08-05)</option>
<option
  
  value="JLMOREL/Win32-Console-ANSI-1.04"
>1.04
  (JLMOREL on 2009-03-22)</option>
<option
  
  value="JLMOREL/Win32-Console-ANSI-1.03"
>1.03
  (JLMOREL on 2009-03-07)</option>
<option
  
  value="JLMOREL/Win32-Console-ANSI-1.02"
>1.02
  (JLMOREL on 2009-02-28)</option>
<option
  
  value="JLMOREL/Win32-Console-ANSI-1.01"
>1.01
  (JLMOREL on 2008-07-07)</option>
<option
  
  value="JLMOREL/Win32-Console-ANSI-1.00"
>1.00
  (JLMOREL on 2005-07-03)</option>
<option
  
  value="JLMOREL/Win32-Console-ANSI-0.07"
>0.07
  (JLMOREL on 2005-01-02)</option>
<option
  
  value="JLMOREL/Win32-Console-ANSI-0.06"
>0.06
  (JLMOREL on 2004-09-20)</option>
<option
  
  value="JLMOREL/Win32-Console-ANSI-0.05"
>0.05
  (JLMOREL on 2004-02-26)</option>
<option
  
  value="JLMOREL/Win32-Console-ANSI-0.04"
>0.04
  (JLMOREL on 2003-10-09)</option>
<option
  
  value="JLMOREL/Win32-Console-ANSI-0.03"
>0.03
  (JLMOREL on 2003-07-21)</option>
<option
  
  value="JLMOREL/Win32-Console-ANSI-0.02"
>0.02
  (JLMOREL on 2003-07-15)</option>
</optgroup>
</select>
    </li>
    <li class="version-diff">
<select onchange="document.location.href='/release/JLMOREL/Win32-Console-ANSI-1.11/diff/' + encodeURIComponent(this.value) + '/lib/Win32/Console/ANSI.pm'
" class="form-control tool-bar-form">
  <option disabled selected>Diff with version</option>
<option
  disabled
  value="JLMOREL/Win32-Console-ANSI-1.11"
>1.11
  (JLMOREL on 2017-10-24)</option>
<option
  
  value="JLMOREL/Win32-Console-ANSI-1.10"
>1.10
  (JLMOREL on 2015-09-06)</option>
<option
  
  value="JLMOREL/Win32-Console-ANSI-1.09"
>1.09
  (JLMOREL on 2015-06-16)</option>
<option
  
  value="JLMOREL/Win32-Console-ANSI-1.08"
>1.08
  (JLMOREL on 2014-01-13)</option>
<optgroup label="BackPAN">'
<option
  
  value="JLMOREL/Win32-Console-ANSI-1.07"
>1.07
  (JLMOREL on 2014-01-12)</option>
<option
  
  value="JLMOREL/Win32-Console-ANSI-1.06"
>1.06
  (JLMOREL on 2013-09-10)</option>
<option
  
  value="JLMOREL/Win32-Console-ANSI-1.05"
>1.05
  (JLMOREL on 2013-08-05)</option>
<option
  
  value="JLMOREL/Win32-Console-ANSI-1.04"
>1.04
  (JLMOREL on 2009-03-22)</option>
<option
  
  value="JLMOREL/Win32-Console-ANSI-1.03"
>1.03
  (JLMOREL on 2009-03-07)</option>
<option
  
  value="JLMOREL/Win32-Console-ANSI-1.02"
>1.02
  (JLMOREL on 2009-02-28)</option>
<option
  
  value="JLMOREL/Win32-Console-ANSI-1.01"
>1.01
  (JLMOREL on 2008-07-07)</option>
<option
  
  value="JLMOREL/Win32-Console-ANSI-1.00"
>1.00
  (JLMOREL on 2005-07-03)</option>
<option
  
  value="JLMOREL/Win32-Console-ANSI-0.07"
>0.07
  (JLMOREL on 2005-01-02)</option>
<option
  
  value="JLMOREL/Win32-Console-ANSI-0.06"
>0.06
  (JLMOREL on 2004-09-20)</option>
<option
  
  value="JLMOREL/Win32-Console-ANSI-0.05"
>0.05
  (JLMOREL on 2004-02-26)</option>
<option
  
  value="JLMOREL/Win32-Console-ANSI-0.04"
>0.04
  (JLMOREL on 2003-10-09)</option>
<option
  
  value="JLMOREL/Win32-Console-ANSI-0.03"
>0.03
  (JLMOREL on 2003-07-21)</option>
<option
  
  value="JLMOREL/Win32-Console-ANSI-0.02"
>0.02
  (JLMOREL on 2003-07-15)</option>
</optgroup>
</select>
    </li>

    <li>
<ul class="dependencies">
  <li class="nav-header">Dependencies</li>
  <li><a href="https://metacpan.org/pod/Win32::Pipe" title="Win32::Pipe" class="ellipsis">Win32::Pipe</a></li>
  <li><a href="./Win32::Process.html" title="Win32::Process" class="ellipsis">Win32::Process</a></li>
  <li><i class="ttip" title="dynamic_config enabled">and possibly others</i></li>
  <li>
    <hr>
  </li>
  <li>
    <a href="https://metacpan.org/module/Win32::Console::ANSI/requires">Reverse dependencies</a>
  </li>
  <li>
    <a href="http://deps.cpantesters.org/?module=Win32%3A%3AConsole%3A%3AANSI">CPAN Testers List</a>
  </li>
  <li>
    <a href="https://cpandeps.grinnz.com/?dist=Win32-Console-ANSI">Dependency graph</a>
  </li>
</ul>
    </li>
    <li class="nav-header">Permalinks</li>
    <li>
      <a href="https://metacpan.org/release/JLMOREL/Win32-Console-ANSI-1.11/view/lib/Win32/Console/ANSI.pm">This version</a>
    </li>
    <li>
      <a href="./Win32::Console::ANSI.html">Latest version</a>
    </li>
    <li>
<div class="plussers">
<div class="nav-header">++ed by:</div>
<div>
<a class="display-all" href="https://metacpan.org/author/MICHIELB"><img src="https://www.gravatar.com/avatar/c35b97da3835376f2d804b022121f962?d=identicon&amp;s=20" title="MICHIELB" alt="MICHIELB"></a>
<a class="display-all" href="https://metacpan.org/author/EXODIST"><img src="https://www.gravatar.com/avatar/f2f0a874b3c91ec888bbc845c31f5cf5?d=identicon&amp;s=20" title="EXODIST" alt="EXODIST"></a>
<a class="display-all" href="https://metacpan.org/author/XLAT"><img src="https://www.gravatar.com/avatar/a477fe9cd31dd7f08e1962deff6ef5c5?d=identicon&amp;s=20" title="XLAT" alt="XLAT"></a>
<a class="display-all" href="https://metacpan.org/author/RWP"><img src="https://www.gravatar.com/avatar/7110eb2389e69a066d9d7cad7a1cc2bf?d=identicon&amp;s=20" title="RWP" alt="RWP"></a>
<a class="display-all" href="https://metacpan.org/author/PINGAN"><img src="https://www.gravatar.com/avatar/a02222e5e0e4fd24d52fc29a08ac6bcb?d=identicon&amp;s=20" title="PINGAN" alt="PINGAN"></a>
</div>
<!-- Display counts of plussers-->
<div>
    <a href="https://metacpan.org/dist/Win32-Console-ANSI/plussers">7 PAUSE users</a>
</div>
<div>
    4 non-PAUSE users
</div>
</div>
    </li>
    <li>
    </li>
              </ul>
            </div>
          </nav>
          <div class="content-navigation">
<div class="breadcrumbs">
  <span>
    <a data-keyboard-shortcut="g a" rel="author" href="https://metacpan.org/author/JLMOREL" class="author-name">Jean-Louis Morel</a>
  </span>
  <span>&nbsp;/&nbsp;</span>
  <div class="release dist-release status-latest maturity-released">
    <span class="dropdown"><b class="caret"></b></span>
<select onchange="document.location.href=&#39;/release/&#39;+this.value+&#39;/view/lib/Win32/Console/ANSI.pm&#39;" class="">
<option
  selected
  value="JLMOREL/Win32-Console-ANSI-1.11"
>1.11
  (JLMOREL on 2017-10-24)</option>
<option
  
  value="JLMOREL/Win32-Console-ANSI-1.10"
>1.10
  (JLMOREL on 2015-09-06)</option>
<option
  
  value="JLMOREL/Win32-Console-ANSI-1.09"
>1.09
  (JLMOREL on 2015-06-16)</option>
<option
  
  value="JLMOREL/Win32-Console-ANSI-1.08"
>1.08
  (JLMOREL on 2014-01-13)</option>
<optgroup label="BackPAN">'
<option
  
  value="JLMOREL/Win32-Console-ANSI-1.07"
>1.07
  (JLMOREL on 2014-01-12)</option>
<option
  
  value="JLMOREL/Win32-Console-ANSI-1.06"
>1.06
  (JLMOREL on 2013-09-10)</option>
<option
  
  value="JLMOREL/Win32-Console-ANSI-1.05"
>1.05
  (JLMOREL on 2013-08-05)</option>
<option
  
  value="JLMOREL/Win32-Console-ANSI-1.04"
>1.04
  (JLMOREL on 2009-03-22)</option>
<option
  
  value="JLMOREL/Win32-Console-ANSI-1.03"
>1.03
  (JLMOREL on 2009-03-07)</option>
<option
  
  value="JLMOREL/Win32-Console-ANSI-1.02"
>1.02
  (JLMOREL on 2009-02-28)</option>
<option
  
  value="JLMOREL/Win32-Console-ANSI-1.01"
>1.01
  (JLMOREL on 2008-07-07)</option>
<option
  
  value="JLMOREL/Win32-Console-ANSI-1.00"
>1.00
  (JLMOREL on 2005-07-03)</option>
<option
  
  value="JLMOREL/Win32-Console-ANSI-0.07"
>0.07
  (JLMOREL on 2005-01-02)</option>
<option
  
  value="JLMOREL/Win32-Console-ANSI-0.06"
>0.06
  (JLMOREL on 2004-09-20)</option>
<option
  
  value="JLMOREL/Win32-Console-ANSI-0.05"
>0.05
  (JLMOREL on 2004-02-26)</option>
<option
  
  value="JLMOREL/Win32-Console-ANSI-0.04"
>0.04
  (JLMOREL on 2003-10-09)</option>
<option
  
  value="JLMOREL/Win32-Console-ANSI-0.03"
>0.03
  (JLMOREL on 2003-07-21)</option>
<option
  
  value="JLMOREL/Win32-Console-ANSI-0.02"
>0.02
  (JLMOREL on 2003-07-15)</option>
</optgroup>
</select>
    <a data-keyboard-shortcut="g d" class="release-name" href="https://metacpan.org/dist/Win32-Console-ANSI">Win32-Console-ANSI-1.11</a>
  </div>
<span class="river-gauge-gauge">
  <svg width="24px"
       height="15px"
       version="1.1"
       xmlns="http://www.w3.org/2000/svg"
       xmlns:xlink="http://www.w3.org/1999/xlink">

    <g>
      <title>        River stage one &#10;
          • 2 direct dependents &#10;          • 2 total dependents
      </title>

      <rect x="0"  y="0" width="4" height="15" fill="#7ea3f2" />
      <rect x="5"  y="0" width="4" height="15" fill="#e4e2e2" />
      <rect x="10"  y="0" width="4" height="15" fill="#e4e2e2" />
      <rect x="15"  y="0" width="4" height="15" fill="#e4e2e2" />
      <rect x="20"  y="0" width="4" height="15" fill="#e4e2e2" />
    </g>
  </svg>

</span>
<div id="Win32-Console-ANSI-fav" class="logged_in">
<form action="https://metacpan.org/account/favorite/add" style="display: inline" onsubmit="return favDistribution(this)">
    <input type="hidden" name="remove" value="0">
    <input type="hidden" name="release" value="Win32-Console-ANSI-1.11">
    <input type="hidden" name="author" value="JLMOREL">
    <input type="hidden" name="distribution" value="Win32-Console-ANSI">
    <button type="submit" class="favorite highlight"><span>11</span> ++</button>
</form>
</div>
<div class="logged_out">
<a href="./Win32::Console::ANSI.html" onclick="alert('Please sign in to add favorites'); return false" class="favorite highlight">
<span>11</span> ++</a>
</div>
   / <span>Win32::Console::ANSI</span>
</div>
          </div>
          <main class="content">


<nav class="toc">
  <div class="toc-header"><strong>Contents</strong></div>
<ul>
  <li><a href="./Win32::Console::ANSI.html#NAME">NAME</a></li>
  <li><a href="./Win32::Console::ANSI.html#SYNOPSIS">SYNOPSIS</a></li>
  <li><a href="./Win32::Console::ANSI.html#DESCRIPTION">DESCRIPTION</a>
    <ul>
      <li><a href="./Win32::Console::ANSI.html#Escape-sequences-for-Cursor-Movement">Escape sequences for Cursor Movement</a></li>
      <li><a href="./Win32::Console::ANSI.html#Escape-sequences-for-Display-Edition">Escape sequences for Display Edition</a></li>
      <li><a href="./Win32::Console::ANSI.html#Escape-sequences-for-Set-Graphics-Rendition">Escape sequences for Set Graphics Rendition</a></li>
      <li><a href="./Win32::Console::ANSI.html#Escape-sequences-for-Select-Character-Set">Escape sequences for Select Character Set</a></li>
      <li><a href="./Win32::Console::ANSI.html#Extra-escape-sequences-for-Set-Cursor-Visibility">Extra escape sequences for Set Cursor Visibility</a></li>
    </ul>
  </li>
  <li><a href="./Win32::Console::ANSI.html#AUXILIARY-FUNCTIONS">AUXILIARY FUNCTIONS</a></li>
  <li><a href="./Win32::Console::ANSI.html#EXPORTS">EXPORTS</a>
    <ul>
      <li><a href="./Win32::Console::ANSI.html#Export-Tags:">Export Tags:</a></li>
    </ul>
  </li>
  <li><a href="./Win32::Console::ANSI.html#CAVEATS">CAVEATS</a></li>
  <li><a href="./Win32::Console::ANSI.html#SEE-ALSO">SEE ALSO</a></li>
  <li><a href="./Win32::Console::ANSI.html#AUTHOR">AUTHOR</a></li>
  <li><a href="./Win32::Console::ANSI.html#COPYRIGHT">COPYRIGHT</a></li>
</ul></nav>
<div class="pod anchors">
<h1 id="NAME">NAME</h1>

<p>Win32::Console::ANSI - Perl extension to emulate ANSI console on Win32 system.</p>

<h1 id="SYNOPSIS">SYNOPSIS</h1>

<pre><code>  use Win32::Console::ANSI;

  print &quot;\e[1;34mThis text is bold blue.\e[0m\n&quot;;
  print &quot;This text is normal.\n&quot;;
  print &quot;\e[33;45;1mBold yellow on magenta.\e[0m\n&quot;;
  print &quot;This text is normal.\n&quot;;</code></pre>

<p>With the Term::ANSIColor module one increases the readability:</p>

<pre><code>  use Win32::Console::ANSI;
  use Term::ANSIColor;

  print color &#39;bold blue&#39;;
  print &quot;This text is bold blue.\n&quot;;
  print color &#39;reset&#39;;
  print &quot;This text is normal.\n&quot;;
  print colored (&quot;Bold yellow on magenta.\n&quot;, &#39;bold yellow on_magenta&#39;);
  print &quot;This text is normal.\n&quot;;</code></pre>

<p>And even more with Term::ANSIScreen:</p>

<pre><code>  use Win32::Console::ANSI;
  use Term::ANSIScreen qw/:color :cursor :screen/;

  locate 1, 1; print &quot;@ This is (1,1)&quot;, savepos;
  print locate(24,60), &quot;@ This is (24,60)&quot;; loadpos;
  print down(2), clline, &quot;@ This is (3,16)\n&quot;;
  color &#39;black on white&#39;; clline;
  print &quot;This line is black on white.\n&quot;;
  print color &#39;reset&#39;; print &quot;This text is normal.\n&quot;;
  print colored (&quot;This text is bold blue.\n&quot;, &#39;bold blue&#39;);
  print &quot;This text is normal.\n&quot;;
  print colored [&#39;bold blue&#39;], &quot;This text is bold blue.\n&quot;;
  print &quot;This text is normal.\n&quot;;</code></pre>

<h1 id="DESCRIPTION">DESCRIPTION</h1>

<p>Windows NT/2000/XP does not support ANSI escape sequences in Win32 Console applications. This module emulates an ANSI console for the script that uses it and also converts the characters from Windows code page to DOS code page (the so-called ANSI to OEM conversion). This conversion permits the display of the accented characters in the console like in the Windows- based editor used to type the script.</p>

<h2 id="Escape-sequences-for-Cursor-Movement"><a id="Escape"></a>Escape sequences for Cursor Movement</h2>

<ul>

<li><p>\e[#A</p>

<p>CUU: CUrsor Up: Moves the cursor up by the specified number of lines without changing columns. If the cursor is already on the top line, this sequence is ignored. \e[A is equivalent to \e[1A.</p>

</li>
<li><p>\e[#B</p>

<p>CUD: CUrsor Down: Moves the cursor down by the specified number of lines without changing columns. If the cursor is already on the bottom line, this sequence is ignored. \e[B is equivalent to \e[1B.</p>

</li>
<li><p>\e[#C</p>

<p>CUF: CUrsor Forward: Moves the cursor forward by the specified number of columns without changing lines. If the cursor is already in the rightmost column, this sequence is ignored. \e[C is equivalent to \e[1C.</p>

</li>
<li><p>\e[#D</p>

<p>CUB: CUrsor Backward: Moves the cursor back by the specified number of columns without changing lines. If the cursor is already in the leftmost column, this sequence is ignored. \e[D is equivalent to \e[1D.</p>

</li>
<li><p>\e[#E</p>

<p>CNL: Cursor Next Line: Moves the cursor down the indicated # of rows, to column 1. \e[E is equivalent to \e[1E.</p>

</li>
<li><p>\e[#F</p>

<p>CPL: Cursor Preceding Line: Moves the cursor up the indicated # of rows, to column 1. \e[F is equivalent to \e[1F.</p>

</li>
<li><p>\e[#G</p>

<p>CHA: Cursor Horizontal Absolute: Moves the cursor to indicated column in current row. \e[G is equivalent to \e[1G.</p>

</li>
<li><p>\e[#;#H</p>

<p>CUP: CUrsor Position: Moves the cursor to the specified position. The first # specifies the line number, the second # specifies the column. If you do not specify a position, the cursor moves to the home position: the upper-left corner of the screen (line 1, column 1).</p>

</li>
<li><p>\e[#;#f</p>

<p>HVP: Horizontal and Vertical Position. Works in the same way as the preceding escape sequence.</p>

</li>
<li><p>\e[s</p>

<p>SCP: Save Cursor Position: Saves the current cursor position. You can move the cursor to the saved cursor position by using the Restore Cursor Position sequence.</p>

</li>
<li><p>\e[u</p>

<p>RCP: Restore Cursor Position: Returns the cursor to the position stored by the Save Cursor Position sequence.</p>

</li>
</ul>

<h2 id="Escape-sequences-for-Display-Edition"><a id="Escape1"></a>Escape sequences for Display Edition</h2>

<ul>

<li><p>\e[#J</p>

<p>ED: Erase Display:</p>

<ul>

<li><p>\e[0J</p>

<p>Clears the screen from cursor to end of display. The cursor position is unchanged.</p>

</li>
<li><p>\e[1J</p>

<p>Clears the screen from start to cursor. The cursor position is unchanged.</p>

</li>
<li><p>\e[2J</p>

<p>Clears the screen and moves the cursor to the home position (line 1, column 1).</p>

</li>
</ul>

<p>\e[J is equivalent to \e[0J. (Some terminal/emulators respond to \e[J as if it were \e[2J. Here, the default is 0; it is the norm)</p>

</li>
<li><p>\e[#K</p>

<p>EL: Erase Line:</p>

<ul>

<li><p>\e[0K</p>

<p>Clears all characters from the cursor position to the end of the line (including the character at the cursor position). The cursor position is unchanged.</p>

</li>
<li><p>\e[1K</p>

<p>Clears all characters from start of line to the cursor position. (including the character at the cursor position). The cursor position is unchanged.</p>

</li>
<li><p>\e[2K</p>

<p>Clears all characters of the whole line. The cursor position is unchanged.</p>

</li>
</ul>

<p>\e[K is equivalent to \e[0K. (Some terminal/emulators respond to \e[K as if it were \e[2K. Here, the default is 0; it is the norm)</p>

</li>
<li><p>\e[#L</p>

<p>IL: Insert Lines: The cursor line and all lines below it move down # lines, leaving blank space. The cursor position is unchanged. The bottommost # lines are lost. \e[L is equivalent to \e[1L.</p>

</li>
<li><p>\e[#M</p>

<p>DL: Delete Line: The block of # lines at and below the cursor are deleted; all lines below them move up # lines to fill in the gap, leaving # blank lines at the bottom of the screen. The cursor position is unchanged. \e[M is equivalent to \e[1M.</p>

</li>
<li><p>\e[#\@</p>

<p>ICH: Insert CHaracter: The cursor character and all characters to the right of it move right # columns, leaving behind blank space. The cursor position is unchanged. The rightmost # characters on the line are lost. \e[\@ is equivalent to \e[1\@.</p>

</li>
<li><p>\e[#P</p>

<p>DCH: Delete CHaracter: The block of # characters at and to the right of the cursor are deleted; all characters to the right of it move left # columns, leaving behind blank space. The cursor position is unchanged. \e[P is equivalent to \e[1P.</p>

</li>
</ul>

<h2 id="Escape-sequences-for-Set-Graphics-Rendition"><a id="Escape2"></a>Escape sequences for Set Graphics Rendition</h2>

<ul>

<li><p>\e[#;...;#m</p>

<p>SGM: Set Graphics Mode: Calls the graphics functions specified by the following values. These specified functions remain active until the next occurrence of this escape sequence. Graphics mode changes the colors and attributes of text (such as bold and underline) displayed on the screen.</p>

<ul>

<li><p>Text attributes</p>

<pre><code>       0    All attributes off
       1    Bold on
       4    Underscore on
       7    Reverse video on
       8    Concealed on

       21   Bold off
       24   Underscore off
       27   Reverse video off
       28   Concealed off</code></pre>

</li>
<li><p>Foreground colors</p>

<pre><code>       30    Black
       31    Red
       32    Green
       33    Yellow
       34    Blue
       35    Magenta
       36    Cyan
       37    White
       
       39    Default foreground color</code></pre>

</li>
<li><p>Background colors</p>

<pre><code>       40    Black
       41    Red
       42    Green
       43    Yellow
       44    Blue
       45    Magenta
       46    Cyan
       47    White
       
       49    Default background color</code></pre>

</li>
<li><p>Bright / high-intensity foreground colors</p>

<pre><code>       90    Bright Black (aka Dark Gray)
       91    Bright Red
       92    Bright Green
       93    Bright Yellow
       94    Bright Blue
       95    Bright Magenta
       96    Bright Cyan
       97    Bright White</code></pre>

</li>
<li><p>Bright / high-intensity background colors</p>

<pre><code>      100    Bright Black (aka Dark Gray)
      101    Bright Red
      102    Bright Green
      103    Bright Yellow
      104    Bright Blue
      105    Bright Magenta
      106    Bright Cyan
      107    Bright White</code></pre>

</li>
</ul>

<p>\e[m is equivalent to \e[0m.</p>

</li>
</ul>

<h2 id="Escape-sequences-for-Select-Character-Set"><a id="Escape3"></a>Escape sequences for Select Character Set</h2>

<ul>

<li><p>\e(U</p>

<p>Selects null mapping - straight to character from the codepage of the console.</p>

</li>
<li><p>\e(K</p>

<p>Selects Windows to DOS mapping. This is the default mapping. It is useful because one types the script with a Windows-based editor (using a Windows codepage) and the script prints its messages on the console using another codepage: without translation, the characters with a code greatest than 127 are different and the printed messages may be not readable.</p>

<p>The conversion is done by the Windows internal functions. If a character cannot be represented in the console code page it is replaced by a question mark character.</p>

</li>
<li><p>\e(#X</p>

<p>This escape sequence is <i>not</i> standard! It is an experimental one, just for fun :-)</p>

<p>If (<i>and only if</i>) the console uses a Unicode police, it is possible to change its codepage with this escape sequence. No effect with an ordinary &quot;Raster Font&quot;. (For Windows NT/2000/XP the currently available Unicode console font is the Lucida Console TrueType font.) # is the number of the codepage needed, 855 for cp855 for instance.</p>

</li>
</ul>

<h2 id="Extra-escape-sequences-for-Set-Cursor-Visibility"><a id="Extra"></a>Extra escape sequences for Set Cursor Visibility</h2>

<p>The two following escape sequences are not in the ANSI standard. These are private escape sequences introduced by DEC for the VT-300 series of video terminals.</p>

<ul>

<li><p>\e[?25h</p>

<p>DECTCEM: DEC Text Cursor Enable Mode: Shows the cursor.</p>

</li>
<li><p>\e[?25l</p>

<p>DECTCEM: DEC Text Cursor Enable Mode: Hides the cursor. (Note: the trailing character is lowercase L.)</p>

</li>
</ul>

<h1 id="AUXILIARY-FUNCTIONS"><a id="AUXILIARY"></a>AUXILIARY FUNCTIONS</h1>

<p>Because the module exports no symbols into the callers namespace, it is necessary to import the names of the functions before using them.</p>

<ul>

<li><p>Cls( );</p>

<p>Clears the screen with the current background color, and set cursor to (1,1).</p>

</li>
<li><p>$old_title = Title( [$new_title] );</p>

<p>Gets and sets the title bar of the current console window. With no argument, the title is not modified.</p>

<pre><code>  use Win32::Console::ANSI qw/ Title /;
  for (reverse 0..5) {
    Title &quot;Count down ... $_&quot;;
    sleep 1;
  }</code></pre>

</li>
<li><p>($old_x, $old_y) = Cursor( [$new_x, $new_y] );</p>

<p>Gets and sets the cursor position (the upper-left corner of the screen is at (1, 1)). With no arguments, the cursor position is not modified. If one of the two coordinates $new_x or $new_y is 0, the corresponding coordinate does not change.</p>

<pre><code>  use Win32::Console::ANSI qw/ Cursor /;
  ($x, $y) = Cursor();     # reads cursor position
  Cursor(5, 8);            # puts the cursor at column 5, line 8
  Cursor(5, 0);            # puts the cursor at column 5, line doesn&#39;t change
  Cursor(0, 8);            # puts the cursor at line 8, column doesn&#39;t change
  Cursor(0, 0);            # the cursor doesn&#39;t change a position (useless!)
  ($x, $y) = Cursor(5, 8); # reads cursor position AND puts cursor at (5, 8)</code></pre>

</li>
<li><p>($Xmax, $Ymax) = XYMax( );</p>

<p>Gets the maximum cursor position. If <code>($x, $y) = Cursor()</code> we have always <code>1 &lt;= $x &lt;= $Xmax</code> and <code>1 &lt;= $y &lt;= $Ymax</code>.</p>

</li>
<li><p>$old_size = CursorSize( [$new_size] );</p>

<p>Gets and sets the cursor size i.e. the percentage of the character cell that is filled by the cursor. This value is between 1 and 100. The cursor appearance varies, ranging from completely filling the cell to showing up as a horizontal line at the bottom of the cell. With no argument, the cursor size is not modified.</p>

</li>
<li><p>$success = SetConsoleSize( $width, $height );</p>

<p>Sets the new size, in columns and rows, of the screen buffer. The specified <code>$width</code> and <code>$height</code> cannot be less than the width and height of the screen buffer&#39;s window. The specified dimensions also cannot be less than the minimum size allowed by the system.</p>

<p>If the function succeeds, the return value is nonzero. If the function fails, the return value is zero and the extended error message is in <code>$^E</code>.</p>

</li>
<li><p>ShowConsoleWindow( $state )</p>

<p>Sets the console window&#39;s show state.</p>

<p>The parameter <code>$state</code> can be one of the following values:</p>

<ul>

<li><p>SW_HIDE</p>

<p>Hides the console window and activates another window.</p>

</li>
<li><p>SW_MAXIMIZE</p>

<p>Maximizes the console window.</p>

</li>
<li><p>SW_MINIMIZE</p>

<p>Minimizes the console window and activates the next top-level window in the Z order.</p>

</li>
<li><p>SW_RESTORE</p>

<p>Activates and displays the console window. If the console window is minimized or maximized, the system restores it to its original size and position. An application should specify this flag when restoring a minimized console window.</p>

</li>
<li><p>SW_SHOW</p>

<p>Activates the console window and displays it in its current size and position.</p>

</li>
<li><p>SW_SHOWDEFAULT</p>

<p>Sets the show state based on the SW_ value specified in the STARTUPINFO structure passed to the CreateProcess function by the program that started the application.</p>

</li>
<li><p>SW_SHOWMAXIMIZED</p>

<p>Activates the console window and displays it as a maximized window.</p>

</li>
<li><p>SW_SHOWMINIMIZED</p>

<p>Activates the window and displays it as a minimized window.</p>

</li>
<li><p>SW_SHOWMINNOACTIVE</p>

<p>Displays the console window as a minimized window. This value is similar to SW_SHOWMINIMIZED, except the window is not activated.</p>

</li>
<li><p>SW_SHOWNA</p>

<p>Displays the console window in its current size and position. This value is similar to SW_SHOW, except the window is not activated.</p>

</li>
<li><p>SW_SHOWNOACTIVATE</p>

<p>Displays the console window in its most recent size and position. This value is similar to SW_NORMAL, except the window is not activated.</p>

</li>
<li><p>SW_NORMAL</p>

<p>Activates and displays the console window. If the window is minimized or maximized, the system restores it to its original size and position.</p>

</li>
</ul>

<p>If the console window was previously visible, the return value is nonzero.</p>

<p>If the console window was previously hidden, the return value is zero.</p>

</li>
<li><p>MinimizeAll( )</p>

<p>Minimizes all the windows on the desktop.</p>

<p>Example:</p>

<pre><code>    #!/usr/bin/perl -w
    use strict;
    use Win32::Console::ANSI qw/ :SW_ /;

    MinimizeAll();
    sleep 2;
    ShowConsoleWindow(SW_SHOWMAXIMIZED);
    sleep 2;
    ShowConsoleWindow(SW_HIDE);
    sleep 2;
    ShowConsoleWindow(SW_RESTORE);</code></pre>

</li>
<li><p>$sucess = SetCloseButton( $state )</p>

<p><code>SetCloseButton( 0 )</code> disables the close button <code>[x]</code> of the console window and deletes the CLOSE menu item from the console menu system.</p>

<p><code>SetCloseButton( 1 )</code> enables the close button <code>[x]</code> of the console window and restores the CLOSE menu item from the console menu system.</p>

<p>If the function succeeds, the return value is nonzero else, the return value is zero.</p>

<p>For obvious reasons, the button is re-established and the menu restored at the end of the script.</p>

<p>Example:</p>

<pre><code>    #!/usr/bin/perl -w
    use strict;
    use Win32::Console::ANSI qw/ SetCloseButton /;

    $SIG{INT}=&#39;IGNORE&#39;;   # no Ctrl-C interrupt
    SetCloseButton(0);    # no close button

    print &quot;No close button, no Ctrl-C interrupt\n&quot;,
          &quot;  Press [Enter]...\n&quot;;
    do { $_ = &lt;STDIN&gt; } until defined;

    $SIG{INT}=&#39;&#39;;         # Ctrl-C interrupt
    print &quot;No close button, Ctrl-C interrupt enabled\n&quot;,
          &quot;  Press [Enter]...\n&quot;;
    do { $_ = &lt;STDIN&gt; } until defined;

    SetCloseButton(1);      # restore close button
    print &quot;Close button available\n  Press [Enter]...\n&quot;;
    do { $_ = &lt;STDIN&gt; } until defined;</code></pre>

</li>
<li><p>$success = SetConsoleFullScreen( $mode )</p>

<p>Sets the console in full-screen or windowed mode. This function works only on WinXP/Vista...</p>

<p><code>SetConsoleFullScreen( 1 )</code> sets the console in full-screen mode.</p>

<p><code>SetConsoleFullScreen( 0 )</code> sets the console in windowed mode.</p>

<p>If the function succeeds, the return value is nonzero. If the function fails, the return value is zero and the extended error message is in <code>$^E</code>).</p>

</li>
<li><p>SetMonitorState( $state )</p>

<p>Sets the monitor state (on / off / standby).</p>

<p>The parameter <code>$state</code> can be one of the following constants:</p>

<ul>

<li><p>MS_ON</p>

<p>The display is being turn-on.</p>

</li>
<li><p>MS_STANDBY</p>

<p>The display is going to low power.</p>

</li>
<li><p>MS_OFF</p>

<p>The display is being shut off.</p>

</li>
</ul>

<p>Example:</p>

<pre><code>    #!/usr/bin/perl -w
    use strict;
    use Win32::Console::ANSI qw/ :MS_ /;

    SetMonitorState(MS_STANDBY);
    sleep 10;                    # standby for 10 sec
    SetMonitorState(MS_ON);</code></pre>

</li>
<li><p>$old_ACP = ScriptCP( [$new_ACP] );</p>

<p>Sets the codepage of the script and return the old value.</p>

</li>
</ul>

<h1 id="EXPORTS">EXPORTS</h1>

<p>Nothing by default; the function names and constants must be explicitly exported.</p>

<h2 id="Export-Tags:"><a id="Export"></a><a id="Export-Tags"></a>Export Tags:</h2>

<ul>

<li><p>:func</p>

<p>exports all the functions.</p>

</li>
<li><p>:MS_</p>

<p>exports <code>SetMonitorState</code> and the <code>MS_*</code> constants.</p>

</li>
<li><p>:SW_</p>

<p>exports <code>MinimizeAll</code>, <code>ShowConsoleWindow</code> and the <code>SW_*</code> constants</p>

</li>
<li><p>:all</p>

<p>exports all.</p>

</li>
</ul>

<h1 id="CAVEATS">CAVEATS</h1>

<p>Due to DOS-console limitations, the blink mode (text attributes 5 and 25) is not implemented.</p>

<p>If you use an integrated environment for developing your program you can see strange results on the console controlled by your IDE. The IDE catches and processes the output of your program so your program does not see a &quot;real&quot; console. In this case test your program in a separate console.</p>

<h1 id="SEE-ALSO"><a id="SEE"></a>SEE ALSO</h1>

<p><a href="./Win32::Console.html">Win32::Console</a>, <a href="https://metacpan.org/pod/Term::ANSIColor">Term::ANSIColor</a>, <a href="./Term::ANSIScreen.html">Term::ANSIScreen</a>.</p>

<h1 id="AUTHOR">AUTHOR</h1>

<p>J-L Morel &lt;jl_morel@bribes.org&gt;</p>

<p>Home page: http://www.bribes.org/perl/wANSIConsole.html</p>

<p>Report bug: http://rt.cpan.org/Public/Dist/Display.html?Name=Win32-Console-ANSI</p>

<h1 id="COPYRIGHT">COPYRIGHT</h1>

<p>Copyright (c) 2003-2017 J-L Morel. All rights reserved.</p>

<p>This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.</p></div>

<div id="metacpan_install-instructions-dialog" class="modal fade">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
        <h4 class="modal-title">Module Install Instructions</h4>
      </div>
      <div class="modal-body">
        <p>To install Win32::Console::ANSI, copy and paste the appropriate command in to your terminal.</p>
        <p><a href="https://metacpan.org/dist/App-cpanminus/view/bin/cpanm">cpanm</a></p>
        <pre><code>cpanm Win32::Console::ANSI</code></pre>
        <p><a href="https://metacpan.org/pod/CPAN">CPAN shell</a></p>
        <pre><code>perl -MCPAN -e shell
install Win32::Console::ANSI</code></pre>
        <p>For more information on module installation, please visit <a href="https://www.cpan.org/modules/INSTALL.html">the detailed CPAN module installation guide</a>.</p>
      </div>
      <div class="modal-footer">
        <a href="./Win32::Console::ANSI.html#" data-dismiss="modal" class="btn">Close</a>
      </div>
    </div>
  </div>
</div>
          </main>
          <div class="content-pagination">
          </div>
        </div>
        <footer class="footer">
          <div class="footer-container">
            <div class="footer-social">
              <div class="footer-link footer-logo">
                <a href="https://metacpan.org/">
                  <img src="https://metacpan.org/static/images/metacpan-logo.svg" alt="MetaCPAN" />
                </a>
              </div>
              <a class="footer-social-link" href="https://github.com/metacpan">
                <i class="fab fa-github-square"></i>
              </a>
              <a class="footer-social-link" href="https://fosstodon.org/@metacpan">
                <i class="fab fa-mastodon"></i>
              </a>
            </div>
            <div class="footer-links">
              <div class="footer-link">
                  <a href="https://metacpan.org/about">About</a>
              </div>
              <div class="footer-link">
                  <a href="https://metacpan.org/about/sponsors">Sponsor</a>
              </div>
              <div class="footer-link">
                  <a href="https://grep.metacpan.org">grep::cpan</a>
              </div>
              <div class="footer-link">
                  <a href="https://metacpan.org/recent">Recent</a>
              </div>
              <div class="footer-link">
                  <a href="https://metacpan.org/about/faq">FAQ</a>
              </div>
              <div class="footer-link">
                  <a href="https://metacpan.org/tools">Tools</a>
              </div>
              <div class="footer-link">
                  <a href="https://fastapi.metacpan.org/">API</a>
              </div>
              <div class="footer-link">
                  <a href="https://www.perl.org/">Perl.org</a>
              </div>
            </div>
            <div class="footer-sponsors">
              <a class="footer-sponsor-link" target="_blank" href="https://www.bytemark.co.uk/" rel="noopener">
                <img class="footer-sponsor-bytemark" src="https://metacpan.org/static/images/sponsors/bytemark_logo.svg" alt="Bytemark logo">
              </a>
              <a class="footer-sponsor-link" target="_blank" href="https://www.liquidweb.com/" rel="noopener">
                <img class="footer-sponsor-liquidweb" src="https://metacpan.org/static/images/sponsors/liquidweb_logo.png" alt="liquidweb logo">
              </a>
              <a class="footer-sponsor-link" target="_blank" href="https://deriv.com/careers/" rel="noopener">
                <img class="footer-sponsor-deriv" src="https://metacpan.org/static/images/sponsors/deriv.svg" alt="Deriv logo">
              </a>
              <a class="footer-sponsor-link" target="_blank" href="https://geocode.xyz" rel="noopener">
                <img class="footer-sponsor-geocode" src="https://metacpan.org/static/images/sponsors/geocodelogo.svg" alt="Geocode logo">
              </a>
              <a class="footer-sponsor-link" target="_blank" href="https://www.fastly.com/" rel="noopener">
                <img class="footer-sponsor-fastly" src="https://metacpan.org/static/images/sponsors/fastly_logo.svg" alt="Fastly logo">
              </a>
              <a class="footer-sponsor-link" target="_blank" href="https://opencagedata.com" rel="noopener">
                <img class="footer-sponsor-opencage" src="https://metacpan.org/static/images/sponsors/open-cage.svg" alt="OpenCage logo">
              </a>
            </div>
          </div>
        </footer>
        <div class="modal fade" tabindex="-1" role="dialog" id="metacpan_keyboard-shortcuts">
          <div class="modal-dialog">
            <div class="modal-content">
              <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal">&times;</button>
                <h4 class="modal-title">Keyboard Shortcuts</h4>
              </div>
              <div class="modal-body row">
<div class="col-md-6">
  <table class="table keyboard-shortcuts">
    <thead>
      <tr>
        <th></th>
        <th>Global</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td class="keys">
          <kbd>s</kbd>
        </td>
        <td>Focus search bar</td>
      </tr>
      <tr>
        <td class="keys">
          <kbd>?</kbd>
        </td>
        <td>Bring up this help dialog</td>
      </tr>
    </tbody>
  </table>

  <table class="table keyboard-shortcuts">
    <thead>
      <tr>
        <th></th>
        <th>GitHub</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td class="keys">
          <kbd>g</kbd> <kbd>p</kbd>
        </td>
        <td>Go to pull requests</td>
      </tr>
      <tr>
        <td class="keys">
          <kbd>g</kbd> <kbd>i</kbd>
        </td>
        <td>go to github issues (only if github is preferred repository)</td>
      </tr>
    </tbody>
  </table>
</div>

<div class="col-md-6">
  <table class="table keyboard-shortcuts">
    <thead>
      <tr>
        <th></th>
        <th>POD</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td class="keys">
          <kbd>g</kbd> <kbd>a</kbd>
        </td>
        <td>Go to author</td>
      </tr>
      <tr>
        <td class="keys">
          <kbd>g</kbd> <kbd>c</kbd>
        </td>
        <td>Go to changes</td>
      </tr>
      <tr>
        <td class="keys">
          <kbd>g</kbd> <kbd>i</kbd>
        </td>
        <td>Go to issues</td>
      </tr>
      <tr>
        <td class="keys">
          <kbd>g</kbd> <kbd>d</kbd>
        </td>
        <td>Go to dist</td>
      </tr>
      <tr>
        <td class="keys">
          <kbd>g</kbd> <kbd>r</kbd>
        </td>
        <td>Go to repository/SCM</td>
      </tr>
      <tr>
        <td class="keys">
          <kbd>g</kbd> <kbd>s</kbd>
        </td>
        <td>Go to source</td>
      </tr>
      <tr>
        <td class="keys">
          <kbd>g</kbd> <kbd>b</kbd>
        </td>
        <td>Go to file browse</td>
      </tr>

    </tbody>
  </table>
</div>

<div class="col-md-12">
  <table class="table keyboard-shortcuts">
    <thead>
      <tr>
        <th></th>
        <th>Search terms</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><em>module:</em> (e.g. <a href="https://metacpan.org/search?q=module%3APlugin">module:Plugin</a>)</td>
      </tr>
      <tr>
        <td><em>distribution:</em> (e.g. <a href="https://metacpan.org/search?q=distribution%3ADancer+auth">distribution:Dancer auth</a>)</td>
      </tr>
      <tr>
        <td><em>author:</em> (e.g. <a href="https://metacpan.org/search?q=author%3ASONGMU+Redis">author:SONGMU Redis</a>)</td>
      </tr>
      <tr>
        <td><em>version:</em> (e.g. <a href="https://metacpan.org/search?q=version%3A1.00">version:1.00</a>)</td>
      </tr>
    </tbody>
  </table>
</div>
              </div>
              <div class="modal-footer"></div>
            </div>
          </div>
        </div>
    </body>
</html>
